#pragma once

#include "Broady.h"

namespace Broady {

class Application
{
public:
	bool Init( void );		// Load configuration, populate and select libpcap adapters... Start the systems
	bool Step( void );		// One step of the application
	void Quit( void );		// Gracefully close all connections... Stop all systems... Dump debug info
	void DoLoop( void );	// Execute Step

	boost::shared_ptr<Sniffer> GetSniffer( void ) const;
	boost::shared_ptr<Listener> GetListener( void ) const;
	boost::shared_ptr<External> GetExternal( void ) const;

private:
	boost::shared_ptr<Sniffer> m_Sniffer;
	boost::shared_ptr<Listener> m_Listener;
	boost::shared_ptr<External> m_External;
};

} // namespace
